# 1. 字典
# 基本格式: 字典名  = [键1:值1,键2:值2]
dic = {'name':'wcb','age':12}
print(type(dic)) # <class 'dict'>


# 字典中的键具备唯一性,但是值可以重复
dic = {"name":'wcb',"name":"ty"}
print(dic) # {'name': 'ty'} # 不会报错,但是会覆盖前面的



# 2. 常见操作
## 2.1 查看元素
dic = {'name':'wcb','age':12}
print(dic['name']) # wcb 不存在则报错
print(dic.get('age')) # 12 不存在则返回None
print(dic.get('sex',"不存在")) # 不存在


## 2.2 修改元素
dic = {'name':'wcb','age':12}
dic['age'] = 18
print(dic.get('age')) # 18


## 2.3 添加元素 键名存在 -> 修改 不存在 -> 新增
dic = {'name':'wcb','age':12}
dic['tel'] = 110
print(dic) # {'name': 'wcb', 'age': 12, 'tel': 110}

## 2.4 删除元素
### 删除整个字典
dic = {'name':'wcb','age':12}
del(dic)
# print(dic) # 报错 NameError: name 'dic' is not defined. Did you mean: 'dir'?

### 删除指定键值对 不存在则报错
dic = {'name':'wcb','age':12}
del(dic['name'])
print(dic ) #{'age': 12}

### 删除整个字典
dic = {'name':'wcb','age':12}
dic.clear()
print(dic) #{}

### pop 删除指定键值对.不存在报错
dic = {'name':'wcb','age':12}
dic.pop('name')
print(dic)

### 默认删除最后一个
dic = {'name':'wcb','age':12}
dic.popitem() # 3.7之前的版本 是随机删除一个 3.7之后,默认删除最后一个键值对
print(dic) # {'name': 'wcb'}


## 求长度
dic = {'name':'wcb','age':12}
print(len(dic)) # 2

## keys -> 返回字典里面包含的所有键名
print(dic.keys(),type(dic.keys())) # dict_keys(['name', 'age']) <class 'dict_keys'>
for key in dic.keys():
    print(key,end='\t') # name	age
print()
## values -> 返回字典里面包含的所有值
dic = {'name':'wcb','age':12}
print(dic.values())
dic['name1'] = 'wcb' # dict_values(['wcb', 12])
print(dic.values()) #dict_values(['wcb', 12, 'wcb'])


## item -> 返回字典里面的所有键值对,以元组的形式
dic = {'name':'wcb','age':12}

print(dic.items()) # dict_items([('name', 'wcb'), ('age', 12)])


# 3. 应用场景
## 使用键值对来存储描述一个物品的相关信息

